<!DOCTYPE html>
<html>
<body style="font-family:verdana">

<p>
<a href="http://learn.parallax.com" target="_blank">
<img border="0" alt="LearnSite" src="Simple%20Libraries/Utility/libsimpletools/LearnHeading.png" width="526" height="91">
</a>
</p>

<h2 style="font-family:verdana;">Simple Library Core and EEPROM Usage</h1>

<p>
This document provides a convenient list of core and EEPROM usage with links to each Simple Library that either has functions that can run code in another core or write to and read from Propeller EEPROM.  You can also find this information in any given Simple Library documentation page's Details section.
</p>

<blockquote><blockquote>
IMPORTANT: Only Simple Libraries that can use one or more additional cores and/or EEPROM addresses are listed here.  For the full library list, see <a href="Simple%20Libraries%20Index.html" target="_blank">Simple Libraries Folder Index</a>.
</blockquote></blockquote>

<h3 style="font-family:verdana;">EEPROM Usage Conventions</h3>
<p>
<blockquote>
Address 65535 building downward - Portions reserved for Simple Library calibration data.  As new libraries are written that use EEPROM addresses for calibration data, they are assigned to progressively lower addresses.  
<br><br>
Address 32768 building upward - Recommended for application data.  To prevent application data from overwriting library data, check EEPROM usage of each library in the application.  This information is listed below and can also be found in the Details section of each library's documentation.
<br><br>
Addresses 0..32767 - Overwritten every time a Spin or C program is loaded into EEPROM.
</blockquote>
</p>

<h3 style="font-family:verdana;">Library EEPROM Usage</h3>

<p>
<blockquote>
<a href="Simple%20Libraries/Robotics/ActivityBot/Documentation%20abcalibrate%20Library.html" target="_blank">abcalibrate.h</a> - 63418..65470
  <br>
  <blockquote>
    cal_activityBot writes to these addresses.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Robotics/ActivityBot/Documentation%20abdrive%20Library.html" target="_blank">abdrive.h</a> - 63418..65470
  <br>
  <blockquote>
    The first call to a drive_ function that sets speed or distance loads values that were set by abcalibrate.h from EEPROM to RAM.  drive_trimSet also writes to this region.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Convert/libabvolts/Documentation%20abvolts%20Library.html" target="_blank">abvolts.h</a> - 63400..63416
  <blockquote>
  da_setupScale writes to and da_useScale reads from EEPROM to main RAM for da_ voltage output functions to use.
  </blockquote>
</blockquote>  
</p>


<h3 style="font-family:verdana;">Library Additional Core Usage</h3>


<p>
<blockquote>
<a href="Simple%20Libraries/Convert/libabvolts/Documentation%20abvolts%20Library.html" target="_blank">abvolts.h</a> +1
  <blockquote>
  A call to either da_volts or da_out will launch 1 additional core. Both functions rely on code running in that additional core.  More calls to either function will not result in more cores being launched.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
	<a href="Simple%20Libraries/Convert/libadcACpropAB/Documentation%20adcACpropAB%20Library.html" target="_blank">adcACpropab.h</a> +1
	<blockquote>
	 A call to adc_start will launch 1 additional core that repeatedly updates ADC measurements.
	</blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Convert/libdacctr/Documentation%20dacctr%20Library.html" target="_blank">dacctr.h</a> +1	
  <blockquote>
    A call to dac_start will launch 1 additional core that repeatedly updates DAC outputs. 
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Display/libvgatext/Documentation%20vgatext%20Library.html" target="_blank">vgatext.h</a> +1
  <blockquote>
    A call to vgatext_open will launch 1 additional core that supplies signaling necessary for displaying text with a VGA display. 
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Misc/libmstimer/Documentation%20mstimer%20Library.html" target="_blank">mstimer.h</a> +1
  <blockquote>
  A call to mstime_start will launch 1 additional core.  Additional calls to mstime_start will only shut down and then re-launch the process, but will not take additional cores.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Motor/libservo/Documentation%20servo%20Library.html" target="_blank">servo.h</a> +1
  <blockquote>
  Launches 1 core that controls up to 14 servos on the first call to servo_set, servo_angle or servo_speed.  Additional calls to any of these functions will not launch more cores.  Additional servos are controlled by supplying different I/O pins to the servo_angle/speed/set function pin arguments. 
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Motor/libservoAux/Documentation%20servoAux%20Library.html" target="_blank">servoAux.h</a> +1
  <blockquote>
   Same as servo.h, but allows controlling 14 more servos if all 14 slots in servo.h are already filled.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Robotics/ActivityBot/Documentation%20abcalibrate%20Library.html" target="_blank">abcalibrate.h</a> +2 (self-terminating)
  <blockquote>
  A call to cal_activityBot launches 2 additional cores that self-terminate when the function is done.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Robotics/ActivityBot/Documentation%20abdrive%20Library.html" target="_blank">abdrive.h</a> +1
  <blockquote>
  A single additional core takes care of ActivityBot encoder monitoring, control system.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Sensor/libgps/Documentation%20gps%20Library.html" target="_blank">gps.h</a> +1
  <blockquote>
  A call to gps_open launches a serial communication process into another core.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Sensor/librfidser/Documentation%20rfidser%20Library.html" target="_blank">rfidser.h</a> +1
  <blockquote>
  Each call to rfid_open launches a serial communication process into another core.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Sensor/libsoundimpact/Documentation%20soundimpact%20Library.html" target="_blank">soundimpact.h</a> +1
  <blockquote>
 Each call to soundImpact_run launches a monitoring loop into another core so that it can track the number of sound impacts during a certain time.  The sensor can also be monitored without launching another core by simply checking its output state.  See ...Documents/SimpleIDE/Learn/Examples/Devices/Sensor/Sound Impact for examples of both approaches.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/TextDevices/libfdserial/Documentation%20fdserial%20Library.html" target="_blank">fdserial.h</a> +1
  <blockquote>
  Each call to fdserial_open launches an additional cog that can support an additional UART communication process.
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Utility/libsimpletools/Documentation%20simpletools%20Library.html" target="_blank">simpletools.h</a> +1 for certain functions.
  <blockquote>
  Any of these functions, if called, will launch a process into another cog and leave it launched for set it/forget it processes.  
  <ul>
  <li> cog_run (+1 per call).  Use cog_end to recover each cog. </li>
  <li> dac (+1) Use dac_stop to recover the cog. </li>
  <li> pwm (+1) Use pwm_stop to recover the cog. </li>
  <li> sd_mount(+1) </li>
  <li> squareWave (+1) Use square_wave_stop to recover the cog. </li>
  </ul>
  </blockquote>
</blockquote>
</p>

<p>
<blockquote>
<a href="Simple%20Libraries/Audio/libwavplayer/Documentation%20wavplayer%20Library.html" target="_blank">wavplayer.h</a> +2 while playing, +1 between tracks
  <blockquote>
	wav_play uses 2 cores while a file is playing, 1 stays alive between tracks and after a call to wav_stop.  wav_close recovers both cores.
  </blockquote>
</blockquote>
</p>



<p>
<br>
Typos, comments, or suggestions? Email: <a href="mailto:editor@parallax.com">
editor@parallax.com</a>.
</p>
</body>
</html> 
